/**
 * Three.js 项目管理系统 - 编辑前端静态文件服务器
 * 独立的前端服务器，用于项目编辑和管理
 * 端口: 7284
 * 无 Live Reload 功能（避免开发时的自动刷新）
 */

const express = require('express');
const path = require('path');
const os = require('os');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
const PORT = 7284;
const BACKEND_PORT = 7283;

/**
 * 获取本机局域网IP地址
 */
function getLocalIPAddress() {
    const interfaces = os.networkInterfaces();
    for (const name of Object.keys(interfaces)) {
        for (const iface of interfaces[name]) {
            // 跳过内部和非IPv4地址
            if (iface.family === 'IPv4' && !iface.internal) {
                return iface.address;
            }
        }
    }
    return 'localhost';
}

// ==================== API 代理配置 ====================
// 将所有 /api 请求代理到后端服务器
app.use('/api', createProxyMiddleware({
    target: `http://localhost:${BACKEND_PORT}`,
    changeOrigin: true,
    logLevel: 'silent', // 或 'debug' 用于调试
    onError: (err, req, res) => {
        console.error('❌ 代理错误:', err.message);
        res.status(500).json({
            success: false,
            error: '无法连接到后端服务器，请确保后端服务器正在运行'
        });
    }
}));

console.log(`🔗 API 代理已配置: /api -> http://localhost:${BACKEND_PORT}`);

// 静态文件服务 - 提供前端所有文件
app.use(express.static(__dirname, {
    setHeaders: (res, filePath) => {
        // 设置 CORS 头，允许跨域访问
        res.set('Access-Control-Allow-Origin', '*');
        
        // 设置正确的 MIME 类型
        if (filePath.endsWith('.js')) {
            res.set('Content-Type', 'application/javascript');
        } else if (filePath.endsWith('.css')) {
            res.set('Content-Type', 'text/css');
        } else if (filePath.endsWith('.html')) {
            res.set('Content-Type', 'text/html');
        }
    }
}));

// 默认路由 - 重定向到登录页
app.get('/', (req, res) => {
    res.redirect('/login.html');
});

// 启动服务器
app.listen(PORT, '0.0.0.0', () => {
    const localIP = getLocalIPAddress();
    
    console.log('');
    console.log('╔════════════════════════════════════════════════════════╗');
    console.log('║          ✅ 编辑前端服务器已启动                       ║');
    console.log('╚════════════════════════════════════════════════════════╝');
    console.log('');
    console.log('💡 端口 7284 | 默认账号: 123/123');
    console.log('');
    console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
    console.log('🌐 访问地址（点击可直接打开）');
    console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
    console.log('');
    console.log('📝 登录页面:');
    console.log(`   本地:     http://localhost:${PORT}/login.html`);
    console.log(`   局域网:   http://${localIP}:${PORT}/login.html`);
    console.log('');
    console.log('✏️  编辑页面:');
    console.log(`   本地:     http://localhost:${PORT}/index.html`);
    console.log(`   局域网:   http://${localIP}:${PORT}/index.html`);
    console.log('');
    console.log('⚙️  后台管理:');
    console.log(`   本地:     http://localhost:${PORT}/admin.html`);
    console.log(`   局域网:   http://${localIP}:${PORT}/admin.html`);
    console.log('');
    console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
    console.log('');
});

